package com.org.action;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import javax.annotation.Resource;

import org.apache.commons.beanutils.ConvertUtils;
import org.apache.logging.log4j.core.util.ArrayUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.org.bean.PhoneBean;
import com.org.service.IPhoneService;

@Controller
public class PhoneAction {

	// 依赖注入【反转控制】
	// 面向接口的编程
	@Resource
	private IPhoneService proS2;// 按名称匹配进行注入

	/**
	 * @ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后，
	 * 写入到response对象的body区，通常用来返回JSON数据或者是XML
	 */
	@ResponseBody
	@RequestMapping(value = "/deleteMany", method = RequestMethod.POST)
	public ResponseEntity<List<PhoneBean>> deleteSelect(
			// @RequestBody String ids)
			String idss) {
		System.out.println("查看传入的字符串ids：" + idss);
		// 把字符串中间的空格删除
		idss = idss.replace(" ", "");
		// 去除字符串最后的逗号
		idss = idss.substring(0, idss.length() - 1);
		System.out.println("查看修改后的传入的字符串ids：" + idss);
		String[] iids = idss.split(",");// 把数组里的值逗号隔开

		// 打印数组
		for (String string : iids) {
			System.out.println("打印数组：" + string);
		}

		// 将String数组转成Integer数组
		Integer[] ids = (Integer[]) ConvertUtils.convert(iids, Integer.class);

		/*
		 * List<Integer> ids= Arrays.asList(Integer); //打印集合 Iterator<Integer> iter =
		 * ids.iterator(); while(iter.hasNext()) { System.out.println(iter.next()); }
		 */

		// 把String转为ArrayList数组
		// List<String> ids= Arrays.asList(d);

		proS2.deleteMany(ids);
		System.out.println("批量删除成功");
		List<PhoneBean> lstPros = proS2.queryInfoByParams(new PhoneBean());
		// 直接返回查询结果集即可
		return ResponseEntity.status(HttpStatus.OK).body(lstPros);
	}

	/**
	 * phoneBack.jsp 页面一加载即查询所有已经删除商品的信息
	 * 
	 * @return 查询到的信息
	 */
	@ResponseBody
	@RequestMapping(value = "AjaxQueryPhoneAction2", method = RequestMethod.GET)
	public List<PhoneBean> ajaxQueryDemo2() {
		// 调用service层进行查询操作【查询所有信息】
		List<PhoneBean> lstPros = proS2.selectAllInfos2();
		// 直接返回查询结果集即可，springmvc框架自动将结果集转换为json字符串返回给客户端
		System.out.println(JSONObject.toJSONString(lstPros));
		return lstPros;
	}

	/**
	 * phoneBack.jsp还原商品
	 * 
	 * @param phoneId
	 * @return
	 */
	@RequestMapping(value = "/phone/{phoneId}", method = RequestMethod.POST)
	public ResponseEntity<List<PhoneBean>> restBackphoneInfo_BackById(@PathVariable("phoneId") Integer phoneId2) {
		// 调用service层进行逻辑删除
		int i = proS2.logicBackByPrimaryKey(phoneId2);
		// 根据删除操作结果进行转发处理
		// 调用service层进行查询操作
		// 查询删除后的剩余回收站商品
		List<PhoneBean> lstPros = proS2.selectAllInfos2();
		// 直接返回查询结果集即可
		return ResponseEntity.status(HttpStatus.OK).body(lstPros);
	}

	/**
	 * phoneBack.jsp彻底删除数据库记录
	 * 
	 * @param phoneId
	 * @return
	 */
	@RequestMapping(value = "/phone/{phoneId}", method = RequestMethod.DELETE)
	public ResponseEntity<List<PhoneBean>> restDeletephoneInfo_DeleteById(@PathVariable("phoneId") Integer phoneId) {
		// 调用service层进行逻辑删除
		int i = proS2.deleteByPrimaryKey(phoneId);
		// 根据删除操作结果进行转发处理
		// 调用service层进行查询操作
		// 需要进行修订，查询条件应该是删除时的查询的条件
		// TODO 待优化
		List<PhoneBean> lstPros = proS2.queryInfoByParams(new PhoneBean());
		// 直接返回查询结果集即可
		return ResponseEntity.status(HttpStatus.OK).body(lstPros);
	}

	/**
	 * phoneBack.jsp清空回收站
	 * 
	 * @return
	 */
	@RequestMapping(value = "delAlldeleted", method = RequestMethod.DELETE)
	public ResponseEntity<List<PhoneBean>> DelAllDeleted() {
		// 调用service层进行逻辑删除
		int i = proS2.deleteAllDeleted();
		// 调用service层进行查询操作
		// TODO 待优化
		List<PhoneBean> lstPros = proS2.queryInfoByParams(new PhoneBean());
		// 直接返回查询结果集即可
		return ResponseEntity.status(HttpStatus.OK).body(lstPros);
	}

}
